package qgs.zisu.javaconcurrency.javaconcurrency.chapter6_forceOrGracefulClose;

/**
 * @Author: 蔡翔
 * @Date: 2019/9/25 9:52
 * @Version 1.0
 *
 * 优雅的线程 是需要人为的设计的，并不是jdk提供的。
 * 下面这种方式是一种开关的方式，从外部控制这个开关（比较优雅）
 */
public class ThreadCloseGreacful {
    // 也可以单独创建一个类 ，继承Thread，然后就可以把这个类当做 Thread
    private static class Worker extends Thread{
        private volatile boolean start = true;

        @Override
        public void run() {
            System.err.println("当前线程是："+Thread.currentThread().getName());
            while (start){
                //
                try {
                    Thread.sleep(1000);
                    System.err.println("i am running");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

        public void shutdown(){
            this.start = false;
        }

    }

    public static void main(String[] args){
         Worker worker = new Worker();
         worker.start();

        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        //让 main 线程等待 worker线程 10000ms 。如果worker线程还是不能结束，就调用 worker的shutdown 方法
        //worker.shutdown();
    }

}
